package io;

import java.io.*;

/**
 * 字符流
 * java将流按照读写单位划分为字节流与字符流
 * java.io.InputStream和OutputStream是所有字节流的超类
 * 而java.ioReader和Writer则是所有字符流的超类,他们是平级关系
 *
 * Reader和Writer是两个抽象类,里面规定了所有字符流都必须具备的读写字符的相关方法
 * 字符流最小读写单位为字符(char),但是底层实际还是读写字节,只是字符与字节的转换工作由
 * 字符流完成
 *
 * 转换流
 * java.io.InputStreamReader和OutputStreamWriter
 * 他们是字符流非常常用的一对实现类的同时也是一对高级流,实际开发中我们不直接操作他们,但是
 * 它们在流连接中是非常重要的一环
 *  转换流的意义
 *  实际开发中我们还有功能更好用的字符高级流,但是其他的字符高级流都有一个共同点;不能
 *  直接连接在字节流上 ,而实际操作设备的流都是低级流同时也是字节流,因此不能直接在流连接中
 *  串联起啦.转换流是一种可以直接连接在字节流上的字符流,其他的高级字符流可以连接在转换流上
 *  而转换流可以连接在字节流上,在流连接中起到"转换器"作用(负责字符与字节的实际转换)
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        /*
        向文件osw.txt中写入文字
         */
        FileOutputStream fos=new FileOutputStream("osw.txt");
        OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
        osw.write("我们都曾经寂寞");
        osw.write("而给对方承诺");
        System.out.println("写出完毕");
        osw.close();
    }
}
